package part2eightlock;

import java.util.concurrent.TimeUnit;

/*
 * 新增一个普通方法hello()没有同步,请问先打印邮件还是hello？
 * 答：新增的方法没有被synchronized修饰，不是同步方法，不受锁的影响，所以不需要等待。其他线程共用了一把锁，所以还需要等待。
 * */
public class Lock803 {

    public static void main(String[] args) throws InterruptedException {
        Phone03 phone = new Phone03();

        new Thread(() -> {
            try {
                phone.sendEmail();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }, "A").start();

        Thread.sleep(200);

        new Thread(() -> {
            try {
                phone.hello();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }, "B").start();

    }

}

class Phone03 {


    public synchronized void sendEmail() throws Exception {
        try {
            TimeUnit.SECONDS.sleep(4);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("sendEmail");
    }

    public void hello() {
        System.out.println("Hello");
    }

}
